package com.brillilab.service.core.experiments;

import com.brillilab.domain.po.experiments.ExperimentBill;

import java.util.Date;
import java.util.List;

public interface IExperimentBillService {
    List<ExperimentBill> selectList(Long experimentId);

	boolean insertBatch(List<ExperimentBill> billList);
	
	boolean insert(ExperimentBill bill);

    ExperimentBill selectById(Long billId);

    void updateById(ExperimentBill bill);

    List<ExperimentBill> selectList(List<Long> billIds);

    int updateBatch(List<ExperimentBill> billUpdate);

    int deleteById(Long id);

    List<ExperimentBill> selectInStepReagentIds(List<Long> stepReagentIds);

    List<ExperimentBill> selectList(Long experimentId,Long phaseId,Long stepId);

    List<ExperimentBill> selectByStepReagentId(Long stepReagentId);

	List<ExperimentBill> selectBillList(Long experimentId, Integer source, Long sourceId);

	List<ExperimentBill> selectBillList(Long experimentId, Integer source);

	void delete(Long experimentId);
	
	void delete(Long experimentId, Integer source, List<Long> sourceIds);

	int selectBillCount(Long experimentId);

    List<ExperimentBill> selectByStepReagentIds(List<Long> ids);

    int deleteByIds(List<Long> billIds);

    List<ExperimentBill> selectBySourceAndExperimentId(Long sourceId,Integer source,Long experimentId);

    boolean deleteBySourceAndExperimentId(Long sourceId,Integer source,Long experimentId);

    /**
     * 获取指定成员在一定时间内的取用列表
     * @param experimentIdList
     * @param beginDate
     * @param endDate
     * @return
     */
    List<ExperimentBill> getBillChartByDateRange(List<Long> experimentIdList, Date beginDate, Date endDate);

}
